"""
参考了评论的代码

执行用时：
352 ms
, 在所有 Python3 提交中击败了
47.48%
的用户
内存消耗：
33.8 MB
, 在所有 Python3 提交中击败了
62.11%
的用户

思路：把4个循环拆成了两个，我咋想不到呢，就像两数相加一样，只要O(n)就行实现了，而不必O(n^2),
可见这类题目的解题思路，取出一部分，用字典记住，然后循环另一部分
"""
from typing import List


class Solution:
    def fourSumCount(
        self, A: List[int], B: List[int], C: List[int], D: List[int]
    ) -> int:
        count = 0
        ab_map = {}
        for a in A:
            for b in B:
                ab_map.setdefault(a + b, 0)
                ab_map[a + b] += 1

        for c in C:
            for d in D:
                s = -(c + d)
                if s in ab_map:
                    count += ab_map[s]
        return count
